from typing import List

from moviepy import VideoFileClip, VideoClip

from tools.common import 判断list中的元素都一样

# 所有视频的后缀
视频所有后缀名 = ["mp4", "avi", "flv", "mkv", "mov", "rmvb", "wmv", "webm", "mpeg", "mpg", "m4v", "3gp", "3g2"]
音频所有后缀名 = ["mp3", "wav", "flac", "wma", "aac", "m4a", "ogg", "ape", "amr", "au", "aiff", "aif", "aifc", "caf", "mka", "opus", "ra", "rm", "vqf", "mid", "midi", "mpa", "mpc", "mpga", "mp1", "mp2", "mp4a", "m4b", "m4p"]

def 判断文件是不是视频文件(文件路径: str) -> bool:
    """
    判断文件是不是视频文件
    :param 文件路径: 文件路径
    :return: 是不是视频文件
    """
    return 文件路径.split(".")[-1].lower() in 视频所有后缀名

def 判断文件是不是音频文件(文件路径: str) -> bool:
    """
    判断文件是不是音频文件
    :param 文件路径: 文件路径
    :return: 是不是音频文件
    """
    return 文件路径.split(".")[-1].lower() in 音频所有后缀名


def 判断一系列视频文件的帧数是多少(视频列表: List[VideoClip]) -> List[int]:
    """
    判断一系列视频文件的帧数是多少
    :param 视频列表: 视频列表
    :return: 一系列视频文件的帧数
    """

    return [视频.fps for 视频 in 视频列表]

def 判断视频的宽高是多少(视频列表: List[VideoClip]) -> List[tuple]:
    """
    判断视频的宽高是否一致
    :param 视频列表: 视频列表
    :return: 视频的宽高是否一致
    """
    return [视频.size for 视频 in 视频列表]

def 过滤只有视频文件(文件列表: List[str]) -> List[str]:
    """
    过滤只有视频文件
    :param 文件列表: 文件列表
    :return: 只有视频文件
    """
    return [文件 for 文件 in 文件列表 if 判断文件是不是视频文件(文件)]

def 过滤只有音频文件(文件列表: List[str]) -> List[str]:
    """
    过滤只有音频文件
    :param 文件列表:
    :return: 只有视频文件
    """
    return [文件 for 文件 in 文件列表 if 判断文件是不是音频文件(文件)]

if __name__ == '__main__':
    print(判断文件是不是视频文件(r"E:\home\DownLoad\1.mp4"))
    print(判断文件是不是音频文件(r"E:\home\DownLoad\1.mp4"))
    测试视频list = [VideoFileClip(r"E:\pythonProjects\cutVideo\final_video.mp4"), VideoFileClip(r"E:\pythonProjects\cutVideo\output_video.mp4")]
    print(判断一系列视频文件的帧数是多少(测试视频list))
    print(f"视频帧数是否一致: {判断list中的元素都一样(判断一系列视频文件的帧数是多少(测试视频list))}")
    print(判断视频的宽高是多少(测试视频list))
    print(f"视频宽高是否一致: {判断list中的元素都一样(判断视频的宽高是多少(测试视频list))}")
